home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-06-28 | 1.2 KB | 52 lines | [TEXT/CWIE] |
- // ListLink.h
-
- #ifndef ListLink_h
- #define ListLink_h
-
- #ifndef ListNode_h
- #include "ListNode.h"
- #endif
- #ifndef Link_h
- #include "Link.h"
- #endif
-
- template < class Target > class ListOf;
- template < class Target > class ListLoop;
-
- template < class Target >
- class ListLink: private ListNode,
- public Link<Target>
- {
- friend class ListOf< Target >;
- friend class ListLoop< Target >;
-
- private:
- static const ListLink<Target> *DownCast( const ListNode *n )
- {
- return static_cast< const ListLink<Target>* >( n );
- }
-
- static ListLink<Target> *DownCast( ListNode *n )
- {
- return static_cast< ListLink<Target>* >( n );
- }
-
- static ListOf<Target>& DownCast( List& n );
-
- public:
- ListLink( Target *t = 0 )
- : Link<Target>( t )
- {}
-
- const ListLink<Target> *Next() const { return DownCast( ListNode::Next() ); }
- const ListLink<Target> *Previous() const { return DownCast( ListNode::Previous() ); }
-
- ListLink<Target> *Next() { return DownCast( ListNode::Next() ); }
- ListLink<Target> *Previous() { return DownCast( ListNode::Previous() ); }
-
- ListNode::Owned;
- ListOf<Target>& Owner() const { return DownCast( ListNode::Owner() ); }
- };
-
- #endif
-